package ar.edu.utn.frba.tacs.warnes.rest;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import org.restlet.data.Response;

import ar.edu.utn.frba.tacs.warnes.entities.Pieza;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;

/**
 * 
 * @author Diego
 * 
 */
@Path("/pieza/")
@Produces("application/xml")
public class PiezaResource {

	public PiezaResource() {
	}

	/**
	 * Obtiene la lista de piezas
	 * 
	 * @return
	 */
	@GET
	public List<Pieza> getPiezas() {
		return ContenedorWarnes.getInstance().getPiezas();
	}

	/**
	 * Obtiene un unico pieza
	 * 
	 * @param id
	 * @return
	 */
	@GET
	@Path("/piezas/{id}")
	@Produces("application/xml")
	public Pieza getPieza(@PathParam("id") Long id) {
		return ContenedorWarnes.getInstance().getPieza(id);
	}

	/**
	 * Actualiza un pieza determinado
	 * 
	 * @param id
	 * @param pieza
	 * @return
	 */
	@PUT
	@Path("/piezas/{id}")
	@Consumes("application/xml")
	public Response updatePieza(@PathParam("id") Long id, Pieza pieza) {
		Pieza piezaViejo = ContenedorWarnes.getInstance().getPieza(id);
		piezaViejo.setAutoOrigen(pieza.getAutoOrigen());
		piezaViejo.setCategoria(pieza.getCategoria());
		piezaViejo.setDescripcion(pieza.getDescripcion());
		piezaViejo.setPrecioEnPesos(pieza.getPrecioEnPesos());
		return null;
	}

	/**
	 * Crea un nuevo pieza
	 * 
	 * @param pieza
	 * @return
	 */
	@POST
	@Path("/piezas")
	public Response addPieza(Pieza pieza) {
		ContenedorWarnes.getInstance().creaUnaPieza(pieza.getDescripcion());
		return Response.getCurrent();
	}

	/**
	 * Borra el pieza indicado
	 * 
	 * @param id
	 * @return
	 */
	@DELETE
	@Path("/piezas/{id}/")
	public Response deletePieza(@PathParam("id") Long id) {
		ContenedorWarnes.getInstance().borrarPieza(id);
		return null;
	}

}
